package cn.cpf.app.pane;

import com.github.cpfniliu.common.util.common.StrUtils;

import javax.swing.*;
import java.awt.*;

public class MessageFormat extends JFrame {

    private JPanel contentPane;

    /**
     * Create the cn.cpf.app.gobang.frame.
     */
    public MessageFormat() {
        super();
        getContentPane().setBackground(Color.GRAY);
        setBackground(Color.LIGHT_GRAY);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setTitle("LengthwaysTextDispose");
        setBounds(100, 100, 580, 800);
        getContentPane().setLayout(null);

        JTextArea jaSource = new JTextArea();
        jaSource.setText("请将所需要转换的文本写在这里\n之后点击文本按钮\n下面的文本框将会显示转换的文本\n若是点击效果按钮\n则会显示转换的效果样式！");
        jaSource.setFont(new Font("新宋体", Font.PLAIN, 12));
        jaSource.setBackground(Color.LIGHT_GRAY);
        final JScrollPane jSPanel = new JScrollPane(jaSource);
        jSPanel.setLocation(0, 0);
        jSPanel.setSize(564, 260);
        getContentPane().add(jSPanel);

        JTextArea jaResult = new JTextArea();
        jaResult.setText("\u8F6C\n\u6362\n\u540E\n\u6587\n\u672C");
        jaResult.setFont(new Font("新宋体", Font.PLAIN, 12));
        jaResult.setBackground(Color.LIGHT_GRAY);
        final JScrollPane jSPane2 = new JScrollPane(jaResult);
        jSPane2.setLocation(0, 301);
        jSPane2.setSize(564, 460);
        getContentPane().add(jSPane2);

        JButton exeBtn = new JButton("文本代码");
        exeBtn.setLocation(61, 270);
        exeBtn.setSize(90, 24);
        exeBtn.addActionListener(e -> {
            jaResult.setLineWrap(true);                 //激活自动换行功能
            jaResult.setWrapStyleWord(true);            // 激活断行不断字功能
            String sourceText = jaSource.getText();
            String tanslatedText = work(sourceText);
            jaResult.setText(tanslatedText);
        });
        getContentPane().add(exeBtn);

        JButton clrBtn = new JButton("md");
        clrBtn.setLocation(212, 270);
        clrBtn.setSize(90, 24);
        clrBtn.addActionListener(e -> {
            jaResult.setLineWrap(false);                 //激活自动换行功能
            jaResult.setWrapStyleWord(false);            // 激活断行不断字功能
            String sourceText = jaSource.getText();
            String tanslatedText = work(sourceText);
            tanslatedText = tanslatedText.replaceAll("\\\\n", "\n");
            jaResult.setText(tanslatedText);
        });
        getContentPane().add(clrBtn);

        clrBtn.doClick();
    }

    public static final String init_msg = "8 BeginString必需起始串定义报文的协议版本（不可加密，报文的第一个域）9 BodyLength必需报文体长度（不可加密，报文的第二个域）35 MsgType必需报文类型（不可加密，报文的第三个域）49 SenderCompID发送方代码（不可加密，发送方标识符）50 SenderSubID发送方子标识符（可加密）56 TargetCompID接收方代码（不可加密，接收方标识符）57 TargetSubID接收方子标识符（可加密）115 OnBehalfOfCompID最初发送方标识符（可加密），用于经第三方中转发送。116 OnBehalfOfSubID最初发送方子标识符（可加密）,用于经第三方中转发送。128 DeliverToCompID最终接收方标识符（可加密），用于经第三方中转发送。129 DeliverToSubID最终接收方子标识符（可加密）,用于经第三方中转发送。34 MsgSeqNum报文序列号（可加密）43 PossDupFlag可能重复标志，重复发送时，作此标记。（可加密）97 PossResend可能重发标志。（可加密）52 SendingTime发送时间（可加密）122 OrigSendingTime原始发送时间（可加密）347 MessageEncoding报文中Encoded域的字符编码类型（非ASCII码）369 LastMsgSeqNumProcessed最后处理报文序号（可加密）370 OnBehalfOfSendingTime最初发送时间";

    private String work(String st) {
        st = StrUtils.replaceJoinAll("\\d+ ?[a-zA-Z]+", st, "\n|", "||");
        st = StrUtils.replaceJoinAll("\\|\\d+", st, "", "|");
        st = st.replaceAll("\\|(必需)", "必需|");
        return "域号|域名|必需域|说明\n--|--|---|--" + st;
    }

    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(() -> {
            try {
                MessageFormat frame = new MessageFormat();
                frame.setVisible(true);
            } catch (Exception e) {
                e.printStackTrace();
            }
        });
    }

}
